{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T05:56:58.598624Z",
     "iopub.status.busy": "2021-08-09T05:56:58.598057Z",
     "iopub.status.idle": "2021-08-09T05:57:00.112912Z",
     "shell.execute_reply": "2021-08-09T05:57:00.112386Z",
     "shell.execute_reply.started": "2021-08-09T05:56:58.598576Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T05:57:09.987256Z",
     "iopub.status.busy": "2021-08-09T05:57:09.986631Z",
     "iopub.status.idle": "2021-08-09T05:57:10.110312Z",
     "shell.execute_reply": "2021-08-09T05:57:10.108834Z",
     "shell.execute_reply.started": "2021-08-09T05:57:09.987204Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总用量 611464\n",
      "-rw-rw-r-- 1 lyz lyz     49324 8月   5 16:54 sample_submit.csv\n",
      "-rw-rw-r-- 1 lyz lyz 151068800 7月  31 18:11 test.npy\n",
      "-rw-rw-r-- 1 lyz lyz  30636709 8月   5 16:57 test.npy.zip\n",
      "-rw-rw-r-- 1 lyz lyz    577557 8月   5 16:54 train.csv\n",
      "-rw-rw-r-- 1 lyz lyz 368640128 7月  31 18:11 train.npy\n",
      "-rw-rw-r-- 1 lyz lyz  75144987 8月   5 16:57 train.npy.zip\n"
     ]
    }
   ],
   "source": [
    "!ls ./人脸关键点检测挑战赛_数据集/ -l"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:18:52.347104Z",
     "iopub.status.busy": "2021-08-09T06:18:52.346491Z",
     "iopub.status.idle": "2021-08-09T06:18:52.368945Z",
     "shell.execute_reply": "2021-08-09T06:18:52.368306Z",
     "shell.execute_reply.started": "2021-08-09T06:18:52.347053Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>left_eye_center_x</th>\n",
       "      <th>left_eye_center_y</th>\n",
       "      <th>right_eye_center_x</th>\n",
       "      <th>right_eye_center_y</th>\n",
       "      <th>nose_tip_x</th>\n",
       "      <th>nose_tip_y</th>\n",
       "      <th>mouth_center_bottom_lip_x</th>\n",
       "      <th>mouth_center_bottom_lip_y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>66.342364</td>\n",
       "      <td>38.523613</td>\n",
       "      <td>28.930840</td>\n",
       "      <td>35.577773</td>\n",
       "      <td>49.256845</td>\n",
       "      <td>68.275955</td>\n",
       "      <td>47.783946</td>\n",
       "      <td>85.361582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>68.912604</td>\n",
       "      <td>31.409117</td>\n",
       "      <td>29.652226</td>\n",
       "      <td>33.028075</td>\n",
       "      <td>51.913358</td>\n",
       "      <td>48.408453</td>\n",
       "      <td>50.698868</td>\n",
       "      <td>79.574038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>68.708994</td>\n",
       "      <td>40.371149</td>\n",
       "      <td>27.130820</td>\n",
       "      <td>40.940680</td>\n",
       "      <td>44.502523</td>\n",
       "      <td>69.988486</td>\n",
       "      <td>45.926427</td>\n",
       "      <td>86.221009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>65.334176</td>\n",
       "      <td>35.471878</td>\n",
       "      <td>29.366461</td>\n",
       "      <td>37.767684</td>\n",
       "      <td>50.411373</td>\n",
       "      <td>64.934767</td>\n",
       "      <td>50.028780</td>\n",
       "      <td>74.883241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>68.634857</td>\n",
       "      <td>29.999486</td>\n",
       "      <td>31.094571</td>\n",
       "      <td>29.616429</td>\n",
       "      <td>50.247429</td>\n",
       "      <td>51.450857</td>\n",
       "      <td>47.948571</td>\n",
       "      <td>84.394286</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   left_eye_center_x  left_eye_center_y  right_eye_center_x  \\\n",
       "0          66.342364          38.523613           28.930840   \n",
       "1          68.912604          31.409117           29.652226   \n",
       "2          68.708994          40.371149           27.130820   \n",
       "3          65.334176          35.471878           29.366461   \n",
       "4          68.634857          29.999486           31.094571   \n",
       "\n",
       "   right_eye_center_y  nose_tip_x  nose_tip_y  mouth_center_bottom_lip_x  \\\n",
       "0           35.577773   49.256845   68.275955                  47.783946   \n",
       "1           33.028075   51.913358   48.408453                  50.698868   \n",
       "2           40.940680   44.502523   69.988486                  45.926427   \n",
       "3           37.767684   50.411373   64.934767                  50.028780   \n",
       "4           29.616429   50.247429   51.450857                  47.948571   \n",
       "\n",
       "   mouth_center_bottom_lip_y  \n",
       "0                  85.361582  \n",
       "1                  79.574038  \n",
       "2                  86.221009  \n",
       "3                  74.883241  \n",
       "4                  84.394286  "
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df = pd.read_csv('人脸关键点检测挑战赛_数据集/train.csv')\n",
    "train_df = train_df.fillna(48)\n",
    "train_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:18:53.653455Z",
     "iopub.status.busy": "2021-08-09T06:18:53.652881Z",
     "iopub.status.idle": "2021-08-09T06:18:53.799384Z",
     "shell.execute_reply": "2021-08-09T06:18:53.798871Z",
     "shell.execute_reply.started": "2021-08-09T06:18:53.653407Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(96, 96, 5000) (96, 96, 2049)\n"
     ]
    }
   ],
   "source": [
    "train_img = np.load('人脸关键点检测挑战赛_数据集/train.npy')\n",
    "test_img = np.load('人脸关键点检测挑战赛_数据集/test.npy')\n",
    "\n",
    "print(train_img.shape, test_img.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:18:54.698219Z",
     "iopub.status.busy": "2021-08-09T06:18:54.697661Z",
     "iopub.status.idle": "2021-08-09T06:18:54.802604Z",
     "shell.execute_reply": "2021-08-09T06:18:54.802099Z",
     "shell.execute_reply.started": "2021-08-09T06:18:54.698172Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fb929e7a358>"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%pylab inline\n",
    "idx = 409\n",
    "xy = train_df.iloc[idx].values.reshape(-1, 2)\n",
    "plt.scatter(xy[:, 0], xy[:, 1])\n",
    "plt.imshow(train_img[:, :, idx], cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:18:55.741646Z",
     "iopub.status.busy": "2021-08-09T06:18:55.741074Z",
     "iopub.status.idle": "2021-08-09T06:18:55.842935Z",
     "shell.execute_reply": "2021-08-09T06:18:55.842446Z",
     "shell.execute_reply.started": "2021-08-09T06:18:55.741599Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fb927291518>"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%pylab inline\n",
    "idx = 400\n",
    "xy = train_df.iloc[idx].values.reshape(-1, 2)\n",
    "plt.scatter(xy[:, 0], xy[:, 1])\n",
    "plt.imshow(train_img[:, :, idx], cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:18:56.925019Z",
     "iopub.status.busy": "2021-08-09T06:18:56.924442Z",
     "iopub.status.idle": "2021-08-09T06:18:56.931900Z",
     "shell.execute_reply": "2021-08-09T06:18:56.931241Z",
     "shell.execute_reply.started": "2021-08-09T06:18:56.924972Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import os, sys, codecs, glob\n",
    "from PIL import Image, ImageDraw\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import cv2\n",
    "\n",
    "import torch\n",
    "torch.backends.cudnn.benchmark = False\n",
    "import torchvision.models as models\n",
    "import torchvision.transforms as transforms\n",
    "import torchvision.datasets as datasets\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.optim as optim\n",
    "from torch.autograd import Variable\n",
    "from torch.utils.data.dataset import Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:18:57.990877Z",
     "iopub.status.busy": "2021-08-09T06:18:57.990290Z",
     "iopub.status.idle": "2021-08-09T06:18:57.998269Z",
     "shell.execute_reply": "2021-08-09T06:18:57.997618Z",
     "shell.execute_reply.started": "2021-08-09T06:18:57.990812Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "class XunFeiDataset(Dataset):\n",
    "    def __init__(self, img, keypoint, transform=None):\n",
    "        self.img = img\n",
    "        self.transform = transform\n",
    "        self.keypoint = keypoint\n",
    "\n",
    "    def __getitem__(self, index):\n",
    "        img = Image.fromarray(self.img[:, :, index]).convert('RGB')\n",
    "        \n",
    "        if self.transform is not None:\n",
    "            img = self.transform(img)\n",
    "        \n",
    "        return img, self.keypoint[index] / 96.0\n",
    "\n",
    "    def __len__(self):\n",
    "        return self.img.shape[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:18:59.075060Z",
     "iopub.status.busy": "2021-08-09T06:18:59.074481Z",
     "iopub.status.idle": "2021-08-09T06:18:59.083792Z",
     "shell.execute_reply": "2021-08-09T06:18:59.083138Z",
     "shell.execute_reply.started": "2021-08-09T06:18:59.075013Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "train_loader = torch.utils.data.DataLoader(\n",
    "    XunFeiDataset(train_img[:, :, :-500], train_df.values[:-500],\n",
    "                    transforms.Compose([\n",
    "                        transforms.ToTensor(),\n",
    "        ])\n",
    "    ),\n",
    "    batch_size=10, shuffle=True, num_workers=5,\n",
    ")\n",
    "\n",
    "val_loader = torch.utils.data.DataLoader(\n",
    "    XunFeiDataset(train_img[:, :, -500:], train_df.values[-500:],\n",
    "                    transforms.Compose([\n",
    "                        transforms.ToTensor(),\n",
    "        ])\n",
    "    ),\n",
    "    batch_size=10, shuffle=False, num_workers=5,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:19:00.010044Z",
     "iopub.status.busy": "2021-08-09T06:19:00.009648Z",
     "iopub.status.idle": "2021-08-09T06:19:00.015667Z",
     "shell.execute_reply": "2021-08-09T06:19:00.014854Z",
     "shell.execute_reply.started": "2021-08-09T06:19:00.010012Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(96, 96, 500)"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_img[:, :, -500:].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:19:01.308490Z",
     "iopub.status.busy": "2021-08-09T06:19:01.307913Z",
     "iopub.status.idle": "2021-08-09T06:19:01.510954Z",
     "shell.execute_reply": "2021-08-09T06:19:01.510465Z",
     "shell.execute_reply.started": "2021-08-09T06:19:01.308442Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import timm\n",
    "\n",
    "class XunFeiNet(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(XunFeiNet, self).__init__()\n",
    "        self.model = timm.create_model('efficientnet_b2', num_classes=8, \n",
    "                          pretrained=True)\n",
    "        \n",
    "    def forward(self, img, labels=None):        \n",
    "        feat = self.model(img)\n",
    "        return feat\n",
    "    \n",
    "model = XunFeiNet().cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:19:46.174292Z",
     "iopub.status.busy": "2021-08-09T06:19:46.173675Z",
     "iopub.status.idle": "2021-08-09T06:19:46.182439Z",
     "shell.execute_reply": "2021-08-09T06:19:46.181974Z",
     "shell.execute_reply.started": "2021-08-09T06:19:46.174240Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def train(train_loader, model, criterion, optimizer, epoch):\n",
    "    model.train()\n",
    "\n",
    "    for i, (input, target) in enumerate(train_loader):\n",
    "        input = input.cuda(non_blocking=True).float()\n",
    "        target = target.cuda(non_blocking=True).float()\n",
    "\n",
    "        output = model(input, target)\n",
    "        loss = criterion(output, target)\n",
    "        optimizer.zero_grad()\n",
    "        torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "        if i % 40 == 0:\n",
    "            print(loss.item())\n",
    "            \n",
    "def validate(val_loader, model):\n",
    "    model.eval()\n",
    "    \n",
    "    val_feats = []\n",
    "    with torch.no_grad():\n",
    "        end = time.time()\n",
    "        for i, (input, target) in enumerate(val_loader):\n",
    "            input = input.cuda().float()\n",
    "            target = target.cuda().float()\n",
    "            output = model(input)\n",
    "            val_feats.append(output.data.cpu().numpy())\n",
    "    return val_feats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:24:01.296640Z",
     "iopub.status.busy": "2021-08-09T06:24:01.296055Z",
     "iopub.status.idle": "2021-08-09T06:26:54.422063Z",
     "shell.execute_reply": "2021-08-09T06:26:54.420736Z",
     "shell.execute_reply.started": "2021-08-09T06:24:01.296591Z"
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch:  0\n",
      "0.14932881295681\n",
      "0.11036612093448639\n",
      "0.1012566015124321\n",
      "0.076789990067482\n",
      "0.08345494419336319\n",
      "0.08900832384824753\n",
      "0.09732230752706528\n",
      "0.05284625291824341\n",
      "0.06075301393866539\n",
      "0.06667089462280273\n",
      "0.06253930926322937\n",
      "0.047588419169187546\n",
      "Val 21.679407207277357\n",
      "Epoch:  1\n",
      "0.06721837818622589\n",
      "0.03572618588805199\n",
      "0.03186364844441414\n",
      "0.040276676416397095\n",
      "0.03900137543678284\n",
      "0.048599280416965485\n",
      "0.026183605194091797\n",
      "0.039958175271749496\n",
      "0.03507665917277336\n",
      "0.03169254586100578\n",
      "0.0353345088660717\n",
      "0.031176066026091576\n",
      "Val 16.717350484993947\n",
      "Epoch:  2\n",
      "0.029041999951004982\n",
      "0.02885553240776062\n",
      "0.019698794931173325\n",
      "0.03400104492902756\n",
      "0.02097838930785656\n",
      "0.035465043038129807\n",
      "0.030916571617126465\n",
      "0.03679990395903587\n",
      "0.021085580810904503\n",
      "0.025437980890274048\n",
      "0.02623896673321724\n",
      "0.020391065627336502\n",
      "Val 14.216371347548904\n",
      "Epoch:  3\n",
      "0.02657110057771206\n",
      "0.020630603656172752\n",
      "0.018363019451498985\n",
      "0.033554740250110626\n",
      "0.019173502922058105\n",
      "0.030652305111289024\n",
      "0.020343098789453506\n",
      "0.01951799914240837\n",
      "0.017434464767575264\n",
      "0.01862201653420925\n",
      "0.021433258429169655\n",
      "0.014975234866142273\n",
      "Val 12.220621898780399\n",
      "Epoch:  4\n",
      "0.015890253707766533\n",
      "0.0176831241697073\n",
      "0.018635131418704987\n",
      "0.02448231540620327\n",
      "0.01655784621834755\n",
      "0.01590149663388729\n",
      "0.018129315227270126\n",
      "0.017299294471740723\n",
      "0.016370326280593872\n",
      "0.021687326952815056\n",
      "0.014714340679347515\n",
      "0.010721874423325062\n",
      "Val 11.36881506987145\n",
      "Epoch:  5\n",
      "0.014725479297339916\n",
      "0.024911101907491684\n",
      "0.015041734091937542\n",
      "0.014008416794240475\n",
      "0.015359804034233093\n",
      "0.014116659760475159\n",
      "0.014267767779529095\n",
      "0.01410349365323782\n",
      "0.011804620735347271\n",
      "0.01773138716816902\n",
      "0.012361632660031319\n",
      "0.010912850499153137\n",
      "Val 10.472020711206472\n",
      "Epoch:  6\n",
      "0.015053743496537209\n",
      "0.011685292236506939\n",
      "0.010627735406160355\n",
      "0.013557550497353077\n",
      "0.008883532136678696\n",
      "0.013943013735115528\n",
      "0.011277848854660988\n",
      "0.014186781831085682\n",
      "0.014953156001865864\n",
      "0.010625963099300861\n",
      "0.009802830405533314\n",
      "0.009221491403877735\n",
      "Val 10.541951963191075\n",
      "Epoch:  7\n",
      "0.015150886960327625\n",
      "0.006846617441624403\n",
      "0.010702522471547127\n",
      "0.008947773836553097\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-108-1f22364de5e9>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      9\u001b[0m     \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Epoch: '\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m     \u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_loader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcriterion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     13\u001b[0m     \u001b[0mval_feats\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mval_loader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m<ipython-input-97-d20d87e082e7>\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(train_loader, model, criterion, optimizer, epoch)\u001b[0m\n\u001b[1;32m     11\u001b[0m         \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclip_grad_norm_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparameters\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     12\u001b[0m         \u001b[0mloss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m         \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     14\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     15\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;36m40\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.local/lib/python3.6/site-packages/torch/optim/lr_scheduler.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m     65\u001b[0m                 \u001b[0minstance\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_step_count\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     66\u001b[0m                 \u001b[0mwrapped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__get__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstance\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m                 \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     69\u001b[0m             \u001b[0;31m# Note that the returned function here is no longer a bound method,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.local/lib/python3.6/site-packages/torch/autograd/grad_mode.py\u001b[0m in \u001b[0;36mdecorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m     24\u001b[0m         \u001b[0;32mdef\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     25\u001b[0m             \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__class__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m                 \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     27\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mF\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     28\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.local/lib/python3.6/site-packages/torch/optim/sgd.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m     95\u001b[0m                 \u001b[0;32mif\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrad\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     96\u001b[0m                     \u001b[0;32mcontinue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 97\u001b[0;31m                 \u001b[0md_p\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     98\u001b[0m                 \u001b[0;32mif\u001b[0m \u001b[0mweight_decay\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     99\u001b[0m                     \u001b[0md_p\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0md_p\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mweight_decay\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.local/lib/python3.6/site-packages/torch/tensor.py\u001b[0m in \u001b[0;36mgrad\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    941\u001b[0m         \u001b[0mrelevant_args\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    942\u001b[0m         \u001b[0;32mfrom\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moverrides\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mhas_torch_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle_torch_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 943\u001b[0;31m         \u001b[0;32mif\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mTensor\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mhas_torch_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrelevant_args\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    944\u001b[0m             \u001b[0;31m# TODO mypy doesn't support @property, see: https://github.com/python/mypy/issues/6185\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    945\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mhandle_torch_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mTensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__get__\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrelevant_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# type: ignore[attr-defined]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.local/lib/python3.6/site-packages/torch/overrides.py\u001b[0m in \u001b[0;36mhas_torch_function\u001b[0;34m(relevant_args)\u001b[0m\n\u001b[1;32m   1085\u001b[0m         \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'__torch_function__'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_disabled_torch_function_impl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1086\u001b[0m         \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0m_disabled_torch_function_impl\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1087\u001b[0;31m         \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrelevant_args\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1088\u001b[0m     )\n\u001b[1;32m   1089\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import mean_absolute_error\n",
    "\n",
    "criterion = nn.MSELoss().cuda()\n",
    "optimizer = torch.optim.SGD(model.parameters(), 0.005)\n",
    "scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.85)\n",
    "best_acc = 0.0\n",
    "\n",
    "for epoch in range(20):\n",
    "    print('Epoch: ', epoch)\n",
    "\n",
    "    train(train_loader, model, criterion, optimizer, epoch)\n",
    "    \n",
    "    val_feats = validate(val_loader, model)\n",
    "    scheduler.step()\n",
    "    \n",
    "    val_feats = np.vstack(val_feats) * 96 + 48\n",
    "    print('Val', mean_absolute_error(val_feats, train_df.values[-500:]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:27:31.507441Z",
     "iopub.status.busy": "2021-08-09T06:27:31.506851Z",
     "iopub.status.idle": "2021-08-09T06:27:31.514139Z",
     "shell.execute_reply": "2021-08-09T06:27:31.513568Z",
     "shell.execute_reply.started": "2021-08-09T06:27:31.507393Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "test_loader = torch.utils.data.DataLoader(\n",
    "    XunFeiDataset(test_img, np.zeros((2049, 8)),\n",
    "                    transforms.Compose([\n",
    "                        transforms.ToTensor(),\n",
    "        ])\n",
    "    ),\n",
    "    batch_size=10, shuffle=False, num_workers=5,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:27:40.091157Z",
     "iopub.status.busy": "2021-08-09T06:27:40.090560Z",
     "iopub.status.idle": "2021-08-09T06:27:43.125122Z",
     "shell.execute_reply": "2021-08-09T06:27:43.124552Z",
     "shell.execute_reply.started": "2021-08-09T06:27:40.091108Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:6: UserWarning: This overload of cuda is deprecated:\n",
      "\tcuda(torch.device device, bool async, *, torch.memory_format memory_format)\n",
      "Consider using one of the following signatures instead:\n",
      "\tcuda(torch.device device, bool non_blocking, *, torch.memory_format memory_format) (Triggered internally at  /pytorch/torch/csrc/utils/python_arg_parser.cpp:882.)\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "pred_tta = []\n",
    "for tti in range(1):\n",
    "    pred = []\n",
    "    with torch.no_grad():\n",
    "        for t, (x, y) in enumerate(test_loader):\n",
    "            x_var = Variable(x).cuda(async=True)\n",
    "            y_var = Variable(y).cuda()\n",
    "            scores = model(x_var)\n",
    "            pred.append(scores.data.cpu().numpy())\n",
    "    pred = np.concatenate(pred, 0)    \n",
    "    print(tti)\n",
    "    pred_tta.append(pred)\n",
    "\n",
    "pred = np.mean(pred_tta, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:29:35.863476Z",
     "iopub.status.busy": "2021-08-09T06:29:35.863008Z",
     "iopub.status.idle": "2021-08-09T06:29:35.885401Z",
     "shell.execute_reply": "2021-08-09T06:29:35.884736Z",
     "shell.execute_reply.started": "2021-08-09T06:29:35.863439Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "col = ['left_eye_center_x', 'left_eye_center_y', 'right_eye_center_x',\n",
    " 'right_eye_center_y', 'nose_tip_x', 'nose_tip_y', \n",
    " 'mouth_center_bottom_lip_x','mouth_center_bottom_lip_y']\n",
    "pd.DataFrame(pred * 96 + 48, columns=col).to_csv('submit.csv', index=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-08-09T06:29:21.861905Z",
     "iopub.status.busy": "2021-08-09T06:29:21.861334Z",
     "iopub.status.idle": "2021-08-09T06:29:21.875635Z",
     "shell.execute_reply": "2021-08-09T06:29:21.875014Z",
     "shell.execute_reply.started": "2021-08-09T06:29:21.861853Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>left_eye_center_x</th>\n",
       "      <th>left_eye_center_y</th>\n",
       "      <th>right_eye_center_x</th>\n",
       "      <th>right_eye_center_y</th>\n",
       "      <th>nose_tip_x</th>\n",
       "      <th>nose_tip_y</th>\n",
       "      <th>mouth_center_bottom_lip_x</th>\n",
       "      <th>mouth_center_bottom_lip_y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>66.342364</td>\n",
       "      <td>38.523613</td>\n",
       "      <td>28.930840</td>\n",
       "      <td>35.577773</td>\n",
       "      <td>49.256845</td>\n",
       "      <td>68.275955</td>\n",
       "      <td>47.783946</td>\n",
       "      <td>85.361582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>68.912604</td>\n",
       "      <td>31.409117</td>\n",
       "      <td>29.652226</td>\n",
       "      <td>33.028075</td>\n",
       "      <td>51.913358</td>\n",
       "      <td>48.408453</td>\n",
       "      <td>50.698868</td>\n",
       "      <td>79.574038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>68.708994</td>\n",
       "      <td>40.371149</td>\n",
       "      <td>27.130820</td>\n",
       "      <td>40.940680</td>\n",
       "      <td>44.502523</td>\n",
       "      <td>69.988486</td>\n",
       "      <td>45.926427</td>\n",
       "      <td>86.221009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>65.334176</td>\n",
       "      <td>35.471878</td>\n",
       "      <td>29.366461</td>\n",
       "      <td>37.767684</td>\n",
       "      <td>50.411373</td>\n",
       "      <td>64.934767</td>\n",
       "      <td>50.028780</td>\n",
       "      <td>74.883241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>68.634857</td>\n",
       "      <td>29.999486</td>\n",
       "      <td>31.094571</td>\n",
       "      <td>29.616429</td>\n",
       "      <td>50.247429</td>\n",
       "      <td>51.450857</td>\n",
       "      <td>47.948571</td>\n",
       "      <td>84.394286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4995</th>\n",
       "      <td>66.489689</td>\n",
       "      <td>36.358727</td>\n",
       "      <td>28.595587</td>\n",
       "      <td>39.653849</td>\n",
       "      <td>45.071286</td>\n",
       "      <td>64.367420</td>\n",
       "      <td>45.071286</td>\n",
       "      <td>70.957708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4996</th>\n",
       "      <td>50.262958</td>\n",
       "      <td>43.791096</td>\n",
       "      <td>21.053248</td>\n",
       "      <td>39.981146</td>\n",
       "      <td>23.275707</td>\n",
       "      <td>59.348474</td>\n",
       "      <td>21.688240</td>\n",
       "      <td>70.778347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4997</th>\n",
       "      <td>67.068343</td>\n",
       "      <td>41.353426</td>\n",
       "      <td>31.536000</td>\n",
       "      <td>35.159712</td>\n",
       "      <td>51.747154</td>\n",
       "      <td>64.824329</td>\n",
       "      <td>48.161280</td>\n",
       "      <td>80.471602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4998</th>\n",
       "      <td>62.549189</td>\n",
       "      <td>41.343645</td>\n",
       "      <td>35.927611</td>\n",
       "      <td>43.211831</td>\n",
       "      <td>48.070832</td>\n",
       "      <td>60.025401</td>\n",
       "      <td>49.004886</td>\n",
       "      <td>67.965146</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999</th>\n",
       "      <td>67.517887</td>\n",
       "      <td>38.994657</td>\n",
       "      <td>28.257509</td>\n",
       "      <td>37.780438</td>\n",
       "      <td>47.684830</td>\n",
       "      <td>53.970294</td>\n",
       "      <td>47.684830</td>\n",
       "      <td>90.802415</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5000 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      left_eye_center_x  left_eye_center_y  right_eye_center_x  \\\n",
       "0             66.342364          38.523613           28.930840   \n",
       "1             68.912604          31.409117           29.652226   \n",
       "2             68.708994          40.371149           27.130820   \n",
       "3             65.334176          35.471878           29.366461   \n",
       "4             68.634857          29.999486           31.094571   \n",
       "...                 ...                ...                 ...   \n",
       "4995          66.489689          36.358727           28.595587   \n",
       "4996          50.262958          43.791096           21.053248   \n",
       "4997          67.068343          41.353426           31.536000   \n",
       "4998          62.549189          41.343645           35.927611   \n",
       "4999          67.517887          38.994657           28.257509   \n",
       "\n",
       "      right_eye_center_y  nose_tip_x  nose_tip_y  mouth_center_bottom_lip_x  \\\n",
       "0              35.577773   49.256845   68.275955                  47.783946   \n",
       "1              33.028075   51.913358   48.408453                  50.698868   \n",
       "2              40.940680   44.502523   69.988486                  45.926427   \n",
       "3              37.767684   50.411373   64.934767                  50.028780   \n",
       "4              29.616429   50.247429   51.450857                  47.948571   \n",
       "...                  ...         ...         ...                        ...   \n",
       "4995           39.653849   45.071286   64.367420                  45.071286   \n",
       "4996           39.981146   23.275707   59.348474                  21.688240   \n",
       "4997           35.159712   51.747154   64.824329                  48.161280   \n",
       "4998           43.211831   48.070832   60.025401                  49.004886   \n",
       "4999           37.780438   47.684830   53.970294                  47.684830   \n",
       "\n",
       "      mouth_center_bottom_lip_y  \n",
       "0                     85.361582  \n",
       "1                     79.574038  \n",
       "2                     86.221009  \n",
       "3                     74.883241  \n",
       "4                     84.394286  \n",
       "...                         ...  \n",
       "4995                  70.957708  \n",
       "4996                  70.778347  \n",
       "4997                  80.471602  \n",
       "4998                  67.965146  \n",
       "4999                  90.802415  \n",
       "\n",
       "[5000 rows x 8 columns]"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
